package cz.vse.adventura.po1715.xforv00_forejt.hra;

import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.pVYPLŇ;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.pVYPLŇpopis;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.TUZKA;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.ZADOST;
import static cz.vse.adventura.po1715.xforv00_forejt.hra.Texty.VYPLN_ZADOST;


/*******************************************************************************
 * Instance třídy {@code PříkazVyplň} představuje příkaz, který vyplní
 * předmětem tužka předmět žádost o vízum
 *
 * @author Vladimír Forejt
 */
public class PříkazVyplň extends APříkaz {



//== KONSTANTNÍ ATRIBUTY TŘÍDY =================================================
//== PROMĚNNÉ ATRIBUTY TŘÍDY ===================================================
//== STATICKÝ INICIALIZAČNÍ BLOK - STATICKÝ KONSTRUKTOR ========================
//== KONSTANTNÍ ATRIBUTY INSTANCÍ ==============================================

    private final String VYPLNIL =
            "Vyplnil(a) jste údaje do žádosti o vízum. Můžete ji podat.";
    private final String NELZE = "Tohle asi nepůjde.";

//== PROMĚNNÉ ATRIBUTY INSTANCÍ ================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ TŘÍDY ========================================
//== OSTATNÍ NESOUKROMÉ METODY TŘÍDY ===========================================

//##############################################################################
//== KONSTRUKTORY A TOVÁRNÍ METODY =============================================

    /***************************************************************************
     *
     */
    public PříkazVyplň()
    {
        super(pVYPLŇ, pVYPLŇpopis);
    }



//== ABSTRAKTNÍ METODY =========================================================
//== PŘÍSTUPOVÉ METODY VLASTNOSTÍ INSTANCÍ =====================================
//== OSTATNÍ NESOUKROMÉ METODY INSTANCÍ ========================================

    /***************************************************************************
     * Provede kontrolu parametrů, jestli se jedná o předměty tužka a žádost.
     * Do batohu místo žádost přidá předmět VyplněnáŽádost
     *
     * @param parametry co čím
     * @return Text zprávy vypsané po provedení příkazu
     */
    @Override
    public String execute( String... parametry )
    {
        if(parametry.length == 0 || parametry.length == 1) {
            return "Musíte zadat co čím chcete vyplnit.";
        }
        String prvníPředmět = parametry[0];
        String druhýPředmět = parametry[1];
        Batoh b = Batoh.getBatoh();
        Předmět vyplněnáŽádost = new Předmět(VYPLN_ZADOST);

        if(((prvníPředmět.equalsIgnoreCase(TUZKA) &&
                druhýPředmět.equalsIgnoreCase(ZADOST)) ||
                (prvníPředmět.equalsIgnoreCase(ZADOST) &&
                druhýPředmět.equalsIgnoreCase(TUZKA)))&&
                b.obsahuje(TUZKA) &&
                b.obsahuje(ZADOST))
        {
            b.odeber(ZADOST);
            b.přidej(vyplněnáŽádost);
            return VYPLNIL;
        } else {
            return NELZE;
        }

    }

//== SOUKROMÉ A POMOCNÉ METODY TŘÍDY ===========================================
//== SOUKROMÉ A POMOCNÉ METODY INSTANCÍ ========================================
//== INTERNÍ DATOVÉ TYPY =======================================================
//== TESTY A METODA MAIN =======================================================
//
//     /***************************************************************************
//      * Testovací metoda.
//      */
//     public static void test()
//     {
//         PříkazVyplň instance = new PříkazVyplň();
//     }
//     /** @param args Parametry příkazového řádku - nepoužívané. */
//     public static void main(String[] args)  {  test();  }
}
